﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using SoucreGame.GLO;

namespace SoucreGame.DTO
{
   public class CInfoNhanVat
    {

        /// <thể hiện tên của một nhân vật xác định>
        /// thể hiện tên của một nhân vật xác định
        /// </summary>
        string ten;
        public string Ten
        {
            get { return ten; }
            set { ten = value; }
        }

        /// <chỉ số sự sống của nhân vật>
        /// chỉ số sự sống của nhân vật
        /// </summary>
        int mau;
        public int Mau
        {
            get { return mau; }
            set { mau = value ; }
        }

        /// <thể hiện tốc độ di chuyển của nhân vật>
        /// thể hiện tốc độ di chuyển của nhân vật
        /// </summary>
        int tocDoDiChuyen;
        public int TocDoDiChuyen
        {
            get { return tocDoDiChuyen; }
            set { tocDoDiChuyen = value; }
        }

        /// <Thể hiện tốc độ tấn công của nhân vật>
        /// Thể hiện tốc độ tấn công của nhân vật
        /// </summary>
        int tocDoTanCong;
        public int TocDoTanCong
        {
            get { return tocDoTanCong; }
            set
            { tocDoTanCong = value;}
        }


        /// <Vị trí hiện tại nhân vật đang đứng>
        /// Vị trí hiện tại nhân vật đang đứng
        /// </summary>
        Vector2 toaDoHienTai;
        public Vector2 ToaDoHienTai
        {
            get { return toaDoHienTai; }
            set { toaDoHienTai = value; }
        }

        /// <Tọa độ đến của nhân vật>
       /// Tọa độ đến của nhân vật
       /// </summary>
        Vector2 toaDoDichDen;
        public Vector2 ToaDoDichDen
        {
            get { return toaDoDichDen; }
            set { toaDoDichDen = value; }
        }

        /// <Tầm tấn công của nhân vật>
        /// Tầm tấn công của nhân vật
        /// </summary>
        int phamViTC;
        public int PhamViTC
        {
            get { return phamViTC; }
            set { phamViTC = value; }
        }

        /// <chỉ số sức mạnh tấn công của nhân vật>
        /// chỉ số sức mạnh tấn công của nhân vật
        /// </summary>
        int sucTanCong; 
        public int SucTanCong
        {
            get { return sucTanCong; }
            set { sucTanCong = value; }
        }

        /// < khả năng phòng thủ của nhân vật>
        /// khả năng phòng thủ của nhân vật
        /// </summary>
        int sucPhongThu;
        public int SucPhongThu
        {
            get { return sucPhongThu; }
            set { sucPhongThu = value; }
        }


        /// <viTriAnh>
        /// thể hiện vi tri anh trong mang
        /// </summary>
        Dictionary<string, Rectangle> viTriAnh;
        public Dictionary<string,Rectangle> ViTriAnh
        {
            get { return viTriAnh; }
            set { viTriAnh = value; }
        }

        /// <thể hiện số thứ tự bắt đầu trong xml>
        /// 
        /// </summary>
        int sttAnhBatDau;
        public int SttAnhBatDau
        {
            get { return sttAnhBatDau; }
            set { sttAnhBatDau = value; }
        }

       /// <số lượng ảnh là chết trong xml>
       /// 
       /// </summary>
        int soLuongAnhChet;
        public int SoLuongAnhChet
        {
            get { return soLuongAnhChet; }
            set { soLuongAnhChet = value; }
        }
       

        /// <số lượng ảnh là Di Chuyển trong xml>
       /// 
       /// </summary>
        int soLuongAnhDiChuyen;
       public int SoLuongAnhDiChuyen
        {
            get { return soLuongAnhDiChuyen; }
            set { soLuongAnhDiChuyen = value; }
        }

        /// <số lượng ảnh là Đứng Yên trong xml>
       /// 
       /// </summary>
        int soLuongAnhDungYen; 
       public int SoLuongAnhDungYen
        {
            get { return soLuongAnhDungYen; }
            set { soLuongAnhDungYen = value; }
        } 

       /// <số lượng ảnh là Tấn Công trong xml>
       /// 
       /// </summary>
        int soLuongAnhTanCong; 
       public int SoLuongAnhTanCong
        {
            get { return soLuongAnhTanCong; }
            set { soLuongAnhTanCong = value; }
        }
       
       
       /// <Ảnh đại diện cho>
       /// 
       /// </summary>
        Texture2D anhNhanVat;
        public Texture2D AnhNhanVat
        {
            get { return anhNhanVat; }
            set { anhNhanVat = value; }
        }
       
       /// <Thể hiện hành động tấn công của một nhân vật cụ thể>
       /// 
       /// </summary>
        string chuoiTanCong;
        public string ChuoiTanCong
        {
            get { return chuoiTanCong; }
            set { chuoiTanCong = value; }
        }

        /// <Thể hiện hành động chết của một nhân vật cụ thể>
       /// 
       /// </summary>
        string chuoiChet;
        public string ChuoiChet
        {
            get { return chuoiChet; }
            set { chuoiChet = value; }
        }

        /// <Thể hiện hành động di chuyển của một nhân vật cụ thể>
       /// 
       /// </summary>
        string chuoiDiChuyen;
        public string ChuoiDiChuyen
        {
            get { return chuoiDiChuyen; }
            set { chuoiDiChuyen = value; }
        }

        /// <Thể hiện hành động đứng yên của một nhân vật cụ thể>
       /// 
       /// </summary>
        string chuoiDungYen;
        public string ChuoiDungYen
        {
            get { return chuoiDungYen; }
            set { chuoiDungYen = value; }
        }

       /// <thể hiện trạng thái cụ thể của một nhân vật cụ thể>
       /// 
       /// </summary>
        Trangthai trangThai;
        public Trangthai TrangThai
        {
            get { return trangThai; }
            set { trangThai = value; }
        }

        public GameTime GameTime { get; set; }
        public SpriteBatch SpriteBatch { get; set; }
        public ContentManager Content { get; set; }

       /// <Khởi tạo>
       /// 
       /// </summary>
       /// <param name="Content">Lưu trữ dữ liệu</param>
       /// <param name="GameTime"></param>
       /// <param name="SpriteBatch">Vẽ</param>
        public CInfoNhanVat(ContentManager Content,GameTime GameTime,SpriteBatch SpriteBatch)
        {
            this.GameTime = GameTime;
            this.Content = Content;
            this.SpriteBatch = SpriteBatch;

            this.ten = "Tru";
            this.mau = 0;
            this.tocDoTanCong = 200;
            this.tocDoDiChuyen = 75;
            this.toaDoHienTai = Vector2.Zero;
            this.toaDoDichDen = Vector2.Zero;
            this.phamViTC = 6;
            this.sucTanCong = 32;
            this.sucPhongThu = 10;
            this.trangThai = Trangthai.song;    
            this.sttAnhBatDau = 1;
            this.soLuongAnhChet = 10;
            this.soLuongAnhDiChuyen = 8;
            this.soLuongAnhDungYen = 12;
            this.soLuongAnhTanCong = 7;
            this.chuoiChet = "chet";
            this.chuoiTanCong = "tan cong";
            this.chuoiDiChuyen = "di chuyen";
            this.chuoiDungYen = "dung yen";
            if(this.Content!=null)
            {
                this.viTriAnh = Content.Load<Dictionary<string, Rectangle>>("Tower//THAP_PHAO");
                this.anhNhanVat = Content.Load<Texture2D>("Tower//THAP PHEP//THAP PHEP");
            }
        }

       /// <Khởi tạo không tham số>
       /// 
       /// </summary>
       public CInfoNhanVat()
        {
            this.ten = "";
            this.mau = 0;
            this.tocDoTanCong = 0;
            this.tocDoDiChuyen = 0;
            this.toaDoHienTai = Vector2.Zero;
            this.toaDoDichDen = Vector2.Zero;
            this.phamViTC = 0;
            this.sucTanCong = 0;
            this.sucPhongThu = 0;
            this.trangThai = Trangthai.song;
            this.sttAnhBatDau = 0;
            this.soLuongAnhChet = 0;
            this.soLuongAnhDiChuyen = 0;
            this.soLuongAnhDungYen = 0;
            this.soLuongAnhTanCong = 0;
            this.chuoiChet = "";
            this.chuoiTanCong = "";
            this.chuoiDiChuyen = "";
            this.chuoiDungYen = "";
            if (this.Content != null)
            {
                this.viTriAnh = Content.Load<Dictionary<string, Rectangle>>("Tower//THAP_PHAO");
                this.anhNhanVat = Content.Load<Texture2D>("Tower//THAP PHEP//THAP PHEP");
            }
        }
    }
}
